// 封装 uni.request 请求
// 支持多个后端服务地址
const BASE_URL = 'http://localhost:6009/order-client' // 原有服务地址
const SYS_BASE_URL = 'http://localhost:6005/sys-client' // 新的系统服务地址

// 基础请求封装
const baseRequest = (baseUrl, options) => {
  return new Promise((resolve, reject) => {
    // 添加日志输出，便于调试
    console.log('发送请求:', {
      baseUrl,
      url: baseUrl + options.url,
      method: options.method || 'GET',
      data: options.data || {}
    });
    
    uni.request({
      url: baseUrl + options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        ...options.header
      },
      success: (res) => {
        console.log('请求成功:', {
          url: baseUrl + options.url,
          response: res
        });
        
        // 根据后端返回的状态码判断请求是否成功
        if (res.statusCode === 200) {
          resolve(res.data)
        } else {
          // 添加更详细的错误信息
          const error = new Error(`请求失败，状态码: ${res.statusCode}，响应: ${JSON.stringify(res.data)}`);
          error.statusCode = res.statusCode;
          error.response = res.data;
          reject(error)
        }
      },
      fail: (err) => {
        console.error('请求失败:', {
          url: baseUrl + options.url,
          error: err
        });
        
        // 显示更具体的错误信息
        let errMsg = '网络请求失败';
        if (err.errMsg) {
          errMsg = err.errMsg;
        }
        
        uni.showToast({
          title: errMsg,
          icon: 'none',
          duration: 3000
        })
        reject(err)
      },
      complete: () => {
        // 请求完成时隐藏loading
        console.log('请求完成:', baseUrl + options.url);
      }
    })
  })
}

// 默认请求方法（使用原有服务地址）
const request = (options) => {
  return baseRequest(BASE_URL, options)
}

// 系统服务请求方法（使用新的服务地址）
const sysRequest = (options) => {
  return baseRequest(SYS_BASE_URL, options)
}

// 封装常用的请求方法
const api = {
  // 原有服务请求方法
  get(url, data, options = {}) {
    return request({
      url,
      method: 'GET',
      data,
      ...options
    })
  },
  
  post(url, data, options = {}) {
    return request({
      url,
      method: 'POST',
      data,
      ...options
    })
  },
  
  put(url, data, options = {}) {
    return request({
      url,
      method: 'PUT',
      data,
      ...options
    })
  },
  
  delete(url, data, options = {}) {
    return request({
      url,
      method: 'DELETE',
      data,
      ...options
    })
  },
  
  // 系统服务请求方法
  sys: {
    get(url, data, options = {}) {
      return sysRequest({
        url,
        method: 'GET',
        data,
        ...options
      })
    },
    
    post(url, data, options = {}) {
      return sysRequest({
        url,
        method: 'POST',
        data,
        ...options
      })
    },
    
    put(url, data, options = {}) {
      return sysRequest({
        url,
        method: 'PUT',
        data,
        ...options
      })
    },
    
    delete(url, data, options = {}) {
      return sysRequest({
        url,
        method: 'DELETE',
        data,
        ...options
      })
    }
  }
}

export default api